<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit d'ajout
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 3 || $GLOBALS['USER']['admin'])){

?>
<?php
//------------------------------------------------------------ Fonctions spécifiques à la page

// on créé la fonction permettant l'affichage des aires géographiques
function afficherOptions($tab, $lvl=0){

	global $dv_region; //on récupère la valeur par défaut du champ

	if(count($tab) > 0){
		foreach($tab as $value){
			if($value[0] == $dv_region){
				echo "<option style=\"padding-left: ".(($lvl*15))."px\" value=\"".$value[0]."\" selected=\"selected\">".htmlentities(capitalise($value[2]), ENT_NOQUOTES, "UTF-8")."</option>";
			}else{
				echo "<option style=\"padding-left: ".(($lvl*15))."px\" value=\"".$value[0]."\">".htmlentities(capitalise($value[2]), ENT_NOQUOTES, "UTF-8")."</option>";
			}
			if(!is_null($value[3])){
				afficherOptions($value[3], $lvl+1);
			}
		}
		unset($value);
	}else{
		echo "<option disabled=\"disabled\">Aucune aire géo. enregistrée</option>";
	}
	
}
?>
<?php
//------------------------------------------------------------ Valeur des champs avant saisie

	$dv_nom = ""; // valeur du champ nom (ajt_nom)
	$dv_auteur = null; // valeur du champ auteur (ajt_auteur)
	$dv_annee = ""; // valeur du champ année d'apparition (ajt_annee)
	$dv_region = null; // valeur du champ region d'origine (ajt_region)
	$dv_liste = array(); // valeur des champs des listes des espèces protégées (ajt_liste[])
	$dv_annexe = array(); // valeur des champs des annexes (ajt_annexe[])
	$dv_genre[] = null; // valeur du champ de la premiere ligne, genre (ajt_genre[0])
	$dv_classificationG[] = null; // valeur du champ de la premiere ligne, classification pour les genres (ajt_classificationG[0])
	$dv_sousGenre = array(); // valeur des champs sous-genre (ajt_sousGenre[])
	$dv_classificationSG = array(); // valeur des champs classification pour les sous-genres (ajt_classificationSG[])
	$dv_propriete = array(); // valeur des champs propriété (ajt_propriete[])
	$dv_valeurPP = array(); // valeur des champs valeur de la propriété (ajt_valeurPP[])
	
	// valeurs possibles du champ ajt_auteur
	$query_recuperation_auteurs = "SELECT CODEAUTEUR AS id, ABREVIATIONAUTEUR AS abreviation FROM auteur ORDER BY abreviation";
	
	$result_recuperation_auteurs =  mysql_query($query_recuperation_auteurs, $connexion) or logError("RECUPERATION AUTEURS-".$query_recuperation_auteurs."-".mysql_error());

	$selectAuteurs = array(); // on créé un tableau qui contient la liste des auteurs ainsi que les informations de chacun
	$nb_auteurs = 0;
	while($tab_recuperation_auteurs = mysql_fetch_assoc($result_recuperation_auteurs)){
		$selectAuteurs[$nb_auteurs] = $tab_recuperation_auteurs;
		$nb_auteurs++;
	}
	
	mysql_free_result($result_recuperation_auteurs);
	
	// valeurs possibles du champ ajt_classification
	$query_recuperation_classifications = "SELECT CODECLASSIFICATION AS id, NOMCLASSIFICATION AS nom FROM classification ORDER BY nom";
	
	$result_recuperation_classifications =  mysql_query($query_recuperation_classifications, $connexion) or logError("RECUPERATION CLASSIFICATIONS-".$query_recuperation_classifications."-".mysql_error());

	$selectClassifications = array(); // on créé un tableau qui contient la liste des classifications ainsi que les informations de chacune
	$nb_classifications = 0;
	while($tab_recuperation_classifications = mysql_fetch_assoc($result_recuperation_classifications)){
		$selectClassifications[$nb_classifications] = $tab_recuperation_classifications;
		$nb_classifications++;
	}
	
	mysql_free_result($result_recuperation_classifications);
	
	// valeurs possibles du champ ajt_genre
	$query_recuperation_genres = "SELECT CODEGENRE AS id, NOMGENRE AS nom FROM genre ORDER BY nom";
	
	$result_recuperation_genres =  mysql_query($query_recuperation_genres, $connexion) or logError("RECUPERATION GENRES-".$query_recuperation_genres."-".mysql_error());

	$selectGenres = array(); // on créé un tableau qui contient la liste des genres ainsi que les informations de chacune
	$nb_genres = 0;
	while($tab_recuperation_genres = mysql_fetch_assoc($result_recuperation_genres)){
		$selectGenres[$nb_genres] = $tab_recuperation_genres;
		$nb_genres++;
	}
	
	mysql_free_result($result_recuperation_genres);
	
	// valeurs possibles du champ ajt_sousGenre
	$query_recuperation_sousgenres = "SELECT CODESOUSGENRE AS id, NOMSOUSGENRE AS nom FROM sous_genre ORDER BY nom";
	
	$result_recuperation_sousgenres =  mysql_query($query_recuperation_sousgenres, $connexion) or logError("RECUPERATION SOUS GENRES-".$query_recuperation_sousgenres."-".mysql_error());

	$selectSousGenres = array(); // on créé un tableau qui contient la liste des sous-genres ainsi que les informations de chacune
	$nb_sousGenres = 0;
	while($tab_recuperation_sousgenres = mysql_fetch_assoc($result_recuperation_sousgenres)){
		$selectSousGenres[$nb_sousGenres] = $tab_recuperation_sousgenres;
		$nb_sousGenres++;
	}
	
	mysql_free_result($result_recuperation_sousgenres);
	
	// valeurs possibles du champ ajt_propriete
	$query_recuperation_proprietes = "SELECT CODEPROPRIETEESPECE AS id, NOMPROPRIETEESPECE AS nom FROM propriete_espece ORDER BY nom";
	
	$result_recuperation_proprietes =  mysql_query($query_recuperation_proprietes, $connexion) or logError("RECUPERATION PROPRIETES-".$query_recuperation_proprietes."-".mysql_error());

	$selectProprietes = array(); // on créé un tableau qui contient la liste des propriétés ainsi que les informations de chacune
	$nb_proprietes = 0;
	while($tab_recuperation_proprietes = mysql_fetch_assoc($result_recuperation_proprietes)){
		$selectProprietes[$nb_proprietes] = $tab_recuperation_proprietes;
		$nb_proprietes++;
	}
	
	mysql_free_result($result_recuperation_proprietes);
	
	// valeurs possibles du champ ajt_region
	$lst_airesgeo = recSQLRequest_1n(null, "CODEAIREGEOGRAPHIQUE", "AIR_CODEAIREGEOGRAPHIQUE", "aire_geographique", $connexion);
	
	// valeurs possibles du champ ajt_liste
	$query_recuperation_listes = "SELECT CODELISTE AS id, NOMLISTE AS nom FROM liste ORDER BY nom";
	
	$result_recuperation_listes =  mysql_query($query_recuperation_listes, $connexion) or logError("RECUPERATION LISTES-".$query_recuperation_listes."-".mysql_error());

	$selectListes = array(); // on créé un tableau qui contient la liste des listes ainsi que les informations de chacune
	$nb_listes = 0;
	while($tab_recuperation_listes = mysql_fetch_assoc($result_recuperation_listes)){
		$selectListes[$nb_listes] = $tab_recuperation_listes;
		$nb_listes++;
	}
	
	mysql_free_result($result_recuperation_listes);
	
	// valeurs possibles du champ ajt_annexe
	$query_recuperation_annexes = "SELECT CODEANNEXE AS id, NOMANNEXE AS nom FROM annexe ORDER BY nom";
	
	$result_recuperation_annexes =  mysql_query($query_recuperation_annexes, $connexion) or logError("RECUPERATION ANNEXES-".$query_recuperation_annexes."-".mysql_error());

	$selectAnnexes = array(); // on créé un tableau qui contient la liste des annexes ainsi que les informations de chacune
	$nb_annexes = 0;
	while($tab_recuperation_annexes = mysql_fetch_assoc($result_recuperation_annexes)){
		$selectAnnexes[$nb_annexes] = $tab_recuperation_annexes;
		$nb_annexes++;
	}
	
	mysql_free_result($result_recuperation_annexes);
	
?>
<?php
//------------------------------------------------------------ Traitements si le formulaire a été envoyé

/********************************* Règles :

	- le nom de l'espèce ne peut pas être vide
	- le nom de l'espèce ne doit pas être déjà enregistré dans la BDD
	- l'auteur et la région d'origine doit exister dans la BDD
	- Liens avec les genres :
		- Chaque classification doit être différente
		- La classification doit exister dans la BDD
		- Le genre doit exister dans la BDD
	- Liens avec les sous-genres :
		- Chaque classification doit être différente
		- La classification doit exister dans la BDD
		- Le sous-genre doit exister dans la BDD
	- Liens avec les propriétés :
		- Chaque propriété doit être différente
		- La propriété doit exister dans la BDD
	- Liens avec les listes :
		- Chaque liste doit être différente
		- La liste doit exister dans la BDD
	- Liens avec les annexes :
		- Chaque annexes doit être différente
		- La annexes doit exister dans la BDD

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	trimTabByKey($_POST, "ajt_"); // appel à la fonction trimTabByKey() définie dans fonctions.php
	
	//---------------------------------- Contrôle des données ----------------------------------
	
	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
	
		// Contrôle des données du nom de l'espèce
		if(isset($_POST['ajt_nom']) && is_string($_POST['ajt_nom'])){
			if(emptyString($_POST['ajt_nom'])){
				$statut[] = "Nom d'espèce vide";
				$erreur = true;
			}else{
				$dv_nom = $_POST['ajt_nom'];
			}
		}else{
			$statut[] = "Aucun nom d'espèce indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de l'auteur ayant découvert l'espèce
		if(isset($_POST['ajt_auteur']) && is_string($_POST['ajt_auteur'])){
			if(!numericInt($_POST['ajt_auteur'])){
				$statut[] = "Format de l'auteur de l'espèce incorrect";
				$erreur = true;
			}else{
				if(valueExists((int)$_POST['ajt_auteur'], "CODEAUTEUR", "auteur", $connexion) == 1){
					$dv_auteur = $_POST['ajt_auteur'];
				}else{
					$statut[] = "L'auteur indiqué n'existe pas";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun auteur de l'espèce indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de l'année d'apparition
		if(isset($_POST['ajt_annee']) && is_string($_POST['ajt_annee'])){
			if(!emptyString($_POST['ajt_annee'])){
				if(!numericInt($_POST['ajt_annee'])){
					$statut[] = "Format de l'année d'apparition incorrect";
					$erreur = true;
				}else{
					if($_POST['ajt_annee'] > date("Y") || $_POST['ajt_annee'] < -13700000000){
						$statut[] = "Année d'apparition incorrecte";
						$erreur = true;
					}else{
						$dv_annee = $_POST['ajt_annee'];
					}
				}
			}else{
				$dv_annee = $_POST['ajt_annee'];
			}
		}else{
			$statut[] = "Aucune année d'apparition de l'espèce indiquée";
			$erreur = true;
		}
		
		// Contrôle des données de la région d'origine
		if(isset($_POST['ajt_region']) && is_string($_POST['ajt_region'])){
			if(!numericInt($_POST['ajt_region'])){
				$statut[] = "Format de la région d'origine incorrect";
				$erreur = true;
			}else{
				if(valueExists((int)$_POST['ajt_region'], "CODEAIREGEOGRAPHIQUE", "aire_geographique", $connexion) == 1){
					$dv_region = $_POST['ajt_region'];
				}else{
					$statut[] = "La région d'origine indiquée n'existe pas";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucune région d'origine indiquée";
			$erreur = true;
		}
		
		// Contrôle des données des listes d'espèce protégées
		if(isset($_POST['ajt_liste']) && is_array($_POST['ajt_liste'])){
			$nbListes = count($_POST['ajt_liste']);
			if(uniqueValues($_POST['ajt_liste'])){
				$new_dv_liste = array();
				$errLst = false;
				for($i=0; $i<$nbListes; $i++){
					if(!numericInt($_POST['ajt_liste'][$i])){
						$statut[] = "Format de la liste d'espèces protégées (".($i+1).") incorrect";
						$erreur = true;
						$errLst = true;
					}else{
						if(valueExists((int)$_POST['ajt_liste'][$i], "CODELISTE", "liste", $connexion) == 1){
							$new_dv_liste[$i] = $_POST['ajt_liste'][$i];
						}else{
							$statut[] = "Une des listes d'espèces protégées n'existe pas";
							$erreur = true;
							$errLst = true;
						}
					}
				}
				if(!$errLst){
					$dv_liste = $new_dv_liste;
				}
			}else{
				$statut[] = "Une liste d'espèces protégées est indiquée plusieurs fois";
				$erreur = true;
			}
		}else{
			$nbListes = 0;
		}
		
		// Contrôle des données des annexes
		if(isset($_POST['ajt_annexe']) && is_array($_POST['ajt_annexe'])){
			$nbAnnexes = count($_POST['ajt_annexe']);
			if(uniqueValues($_POST['ajt_annexe'])){
				$new_dv_annexe = array();
				$errAnn = false;
				for($i=0; $i<$nbAnnexes; $i++){
					if(!numericInt($_POST['ajt_annexe'][$i])){
						$statut[] = "Format de l'annexe (".($i+1).") incorrect";
						$erreur = true;
						$errAnn = true;
					}else{
						if(valueExists((int)$_POST['ajt_annexe'][$i], "CODEANNEXE", "annexe", $connexion) == 1){
							$new_dv_annexe[$i] = $_POST['ajt_annexe'][$i];
						}else{
							$statut[] = "Une des annexe n'existe pas";
							$erreur = true;
							$errAnn = true;
						}
					}
				}
				if(!$errAnn){
					$dv_annexe = $new_dv_annexe;
				}
			}else{
				$statut[] = "Une annexe est indiquée plusieurs fois";
				$erreur = true;
			}
		}else{
			$nbAnnexes = 0;
		}
		
		// Contrôle des données des liens avec les genres
		if(isset($_POST['ajt_nbLiensG']) && is_string($_POST['ajt_nbLiensG']) && isset($_POST['ajt_genre']) && is_array($_POST['ajt_genre']) && isset($_POST['ajt_classificationG']) && is_array($_POST['ajt_classificationG'])){
			$nbGenres = count($_POST['ajt_genre']);
			$nbClassifications = count($_POST['ajt_classificationG']);
			if(numericInt($_POST['ajt_nbLiensG']) && $_POST['ajt_nbLiensG'] == $nbGenres && $_POST['ajt_nbLiensG'] == $nbClassifications){
				if($_POST['ajt_nbLiensG'] >= 1){
					if(uniqueValues($_POST['ajt_classificationG'])){
						$new_dv_genre = array();
						$new_dv_classificationG = array();
						$errGen = false;
						for($i=0; $i<$_POST['ajt_nbLiensG']; $i++){
							if(!numericInt($_POST['ajt_genre'][$i])){
								$statut[] = "Format du genre (ligne ".($i+1).") incorrect";
								$erreur = true;
								$errGen = true;
							}else{
								if(valueExists((int)$_POST['ajt_genre'][$i], "CODEGENRE", "genre", $connexion) == 1){
									$new_dv_genre[$i] = $_POST['ajt_genre'][$i];
								}else{
									$statut[] = "Un des genres n'existe pas";
									$erreur = true;
									$errGen = true;
								}
							}
							if(!numericInt($_POST['ajt_classificationG'][$i])){
								$statut[] = "Format de la classif. (genre) (ligne ".($i+1).") incorrect";
								$erreur = true;
								$errGen = true;
							}else{
								if(valueExists((int)$_POST['ajt_classificationG'][$i], "CODECLASSIFICATION", "classification", $connexion) == 1){
									$new_dv_classificationG[$i] = $_POST['ajt_classificationG'][$i];
								}else{
									$statut[] = "Une des classif. (genre) n'existe pas";
									$erreur = true;
									$errGen = true;
								}
							}
						}
						if(!$errGen){
							$dv_genre = $new_dv_genre;
							$dv_classificationG = $new_dv_classificationG;
						}
					}else{
						$statut[] = "Une classif. (genre) est indiquée plusieurs fois";
						$erreur = true;
					}
				}else{
					$statut[] = "Au moins un lien avec un genre doit être indiqué";
					$erreur = true;
				}
			}else{
				$statut[] = "Liens avec les genres mal indiqués";
				$erreur = true;
			}
		}else{
			$statut[] = "Aucun lien avec les genres indiqué";
			$erreur = true;
		}
		
		// Contrôle des données des liens avec les sous-genres
		if(isset($_POST['ajt_nbLiensSG']) && is_string($_POST['ajt_nbLiensSG']) && isset($_POST['ajt_sousGenre']) && is_array($_POST['ajt_sousGenre']) && isset($_POST['ajt_classificationSG']) && is_array($_POST['ajt_classificationSG'])){
			$nbSousGenres = count($_POST['ajt_sousGenre']);
			$nbClassifications = count($_POST['ajt_classificationSG']);
			if(numericInt($_POST['ajt_nbLiensSG']) && $_POST['ajt_nbLiensSG'] == $nbSousGenres && $_POST['ajt_nbLiensSG'] == $nbClassifications){
				if(uniqueValues($_POST['ajt_classificationSG'])){
					$new_dv_sousGenre = array();
					$new_dv_classificationSG = array();
					$errSSGen = false;
					for($i=0; $i<$_POST['ajt_nbLiensSG']; $i++){
						if(!numericInt($_POST['ajt_sousGenre'][$i])){
							$statut[] = "Format du sous-genre (ligne ".($i+1).") incorrect";
							$erreur = true;
							$errSSGen = true;
						}else{
							if(valueExists((int)$_POST['ajt_sousGenre'][$i], "CODESOUSGENRE", "sous_genre", $connexion) == 1){
								$new_dv_sousGenre[$i] = $_POST['ajt_sousGenre'][$i];
							}else{
								$statut[] = "Un des sous-genres n'existe pas";
								$erreur = true;
								$errSSGen = true;
							}
						}
						if(!numericInt($_POST['ajt_classificationSG'][$i])){
							$statut[] = "Format de la classif. (sous-genre) (ligne ".($i+1).") incorrect";
							$erreur = true;
							$errSSGen = true;
						}else{
							if(valueExists((int)$_POST['ajt_classificationSG'][$i], "CODECLASSIFICATION", "classification", $connexion) == 1){
								$new_dv_classificationSG[$i] = $_POST['ajt_classificationSG'][$i];
							}else{
								$statut[] = "Une des classifs. (sous-genre) n'existe pas";
								$erreur = true;
								$errSSGen = true;
							}
						}
					}
					if(!$errSSGen){
						$dv_sousGenre = $new_dv_sousGenre;
						$dv_classificationSG = $new_dv_classificationSG;
					}
				}else{
					$statut[] = "Une classif. (sous-genre) est indiquée plusieurs fois";
					$erreur = true;
				}
			}else{
				$statut[] = "Liens avec les sous-genres mal indiqués";
				$erreur = true;
			}
		}
		
		// Contrôle des données des propriétés de l'espèce
		if(isset($_POST['ajt_nbProprietes']) && is_string($_POST['ajt_nbProprietes']) && isset($_POST['ajt_propriete']) && is_array($_POST['ajt_propriete']) && isset($_POST['ajt_valeurPP']) && is_array($_POST['ajt_valeurPP'])){
			$nbProprietes = count($_POST['ajt_propriete']);
			$nbValeursPP = count($_POST['ajt_valeurPP']);
			if(numericInt($_POST['ajt_nbProprietes']) && $_POST['ajt_nbProprietes'] == $nbProprietes && $_POST['ajt_nbProprietes'] == $nbValeursPP){
				if(uniqueValues($_POST['ajt_valeurPP'])){
					$new_dv_propriete = array();
					$new_dv_valeurPP = array();
					$errPP = false;
					for($i=0; $i<$_POST['ajt_nbProprietes']; $i++){
						if(!numericInt($_POST['ajt_propriete'][$i])){
							$statut[] = "Format de la propriété (ligne ".($i+1).") incorrect";
							$erreur = true;
							$errPP = true;
						}else{
							if(valueExists((int)$_POST['ajt_propriete'][$i], "CODEPROPRIETEESPECE", "propriete_espece", $connexion) == 1){
								$new_dv_propriete[$i] = $_POST['ajt_propriete'][$i];
							}else{
								$statut[] = "Une des propriétés n'existe pas";
								$erreur = true;
								$errPP = true;
							}
						}
						if(!is_string($_POST['ajt_valeurPP'][$i])){
							$statut[] = "Format de la valeur de la propriété (ligne ".($i+1).") incorrect";
							$erreur = true;
							$errPP = true;
						}else{
							$new_dv_valeurPP[$i] = $_POST['ajt_valeurPP'][$i];
						}
					}
					if(!$errPP){
						$dv_propriete = $new_dv_propriete;
						$dv_valeurPP = $new_dv_valeurPP;
					}
				}else{
					$statut[] = "Une propriété est indiquée plusieurs fois";
					$erreur = true;
				}
			}else{
				$statut[] = "Propriétés de l'espèce mal indiquées";
				$erreur = true;
			}
		}
		
		//---------------------------------- Création de l'espèce ----------------------------------
	
		if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
		
			// Ajout des informations dans la table ESPECE
			$query_ajout_espece = "INSERT INTO espece(NOMESPECE, CODEAUTEUR, CODEAIREGEOGRAPHIQUE, ANNEEAPPARITION) ";
			$query_ajout_espece .= "VALUES(".mysqlString($_POST['ajt_nom'])." , ".$_POST['ajt_auteur']." , ".$_POST['ajt_region']." ";
			if(emptyString($_POST['ajt_annee'])){
				$query_ajout_espece .= ", NULL ";
			}else{
				$query_ajout_espece .= ", ".$_POST['ajt_annee']." ";
			}
			$query_ajout_espece .= ") ";
			
			$result_ajout_espece = mysql_query($query_ajout_espece, $connexion) or logError("CREATION ESPECE-".$query_ajout_espece."-".mysql_error());
		
			if($result_ajout_espece === true){
				$idEspece = valueMax("CODEESPECE", "espece", $connexion);
			}else{
				$statut[] = "Erreur critique lors de la création de l'espèce";
				$erreur = true;
			}
			
			if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
			
				// Ajout des informations dans les tables EST_DANS_LISTE
				for($i=0; $i<$nbListes; $i++){
				
					$query_ajout_lien_espece_liste = "INSERT INTO est_dans_liste(CODELISTE, CODEESPECE) ";
					$query_ajout_lien_espece_liste .= "VALUES(".$_POST['ajt_liste'][$i].", ".$idEspece.") ";
					
					$result_ajout_lien_espece_liste = mysql_query($query_ajout_lien_espece_liste, $connexion) or logError("CREATION LIEN ESPECE / LISTE-".$query_ajout_lien_espece_liste."-".mysql_error());
				
					if($result_ajout_lien_espece_liste === false){
						$statut[] = "Erreur critique à la création du lien ".($i+1)." espèce/liste";
						$erreur = true;
					}
				
				}
				
				// Ajout des informations dans les tables EST_DANS_ANNEXE
				for($i=0; $i<$nbAnnexes; $i++){
				
					$query_ajout_lien_espece_annexe = "INSERT INTO est_dans_annexe(CODEANNEXE, CODEESPECE) ";
					$query_ajout_lien_espece_annexe .= "VALUES(".$_POST['ajt_annexe'][$i].", ".$idEspece.") ";
					
					$result_ajout_lien_espece_annexe = mysql_query($query_ajout_lien_espece_annexe, $connexion) or logError("CREATION LIEN ESPECE / ANNEXE-".$query_ajout_lien_espece_annexe."-".mysql_error());
				
					if($result_ajout_lien_espece_annexe === false){
						$statut[] = "Erreur critique à la création du lien ".($i+1)." espèce/annexe";
						$erreur = true;
					}
				
				}
			
				// Ajout des informations dans les tables GENRE_A_POUR_ESPECE
				for($i=0; $i<$_POST['ajt_nbLiensG']; $i++){
				
					$query_ajout_lien_espece_genre = "INSERT INTO genre_a_pour_espece(CODEGENRE, CODEESPECE, CODECLASSIFICATION) ";
					$query_ajout_lien_espece_genre .= "VALUES(".$_POST['ajt_genre'][$i].", ".$idEspece.", ".$_POST['ajt_classificationG'][$i].") ";
					
					$result_ajout_lien_espece_genre = mysql_query($query_ajout_lien_espece_genre, $connexion) or logError("CREATION LIEN ESPECE / GENRE-".$query_ajout_lien_espece_genre."-".mysql_error());
				
					if($result_ajout_lien_espece_genre === false){
						$statut[] = "Erreur critique à la création du lien ".($i+1)." espèce/genre";
						$erreur = true;
					}
				
				}
				
				// Ajout des informations dans les tables A_POUR_SOUS_GENRE
				for($i=0; $i<$_POST['ajt_nbLiensSG']; $i++){
				
					$query_ajout_lien_espece_sousgenre = "INSERT INTO a_pour_sous_genre(CODESOUSGENRE, CODEESPECE, CODECLASSIFICATION) ";
					$query_ajout_lien_espece_sousgenre .= "VALUES(".$_POST['ajt_sousGenre'][$i].", ".$idEspece.", ".$_POST['ajt_classificationSG'][$i].") ";
					
					$result_ajout_lien_espece_sousgenre = mysql_query($query_ajout_lien_espece_sousgenre, $connexion) or logError("CREATION LIEN ESPECE / SOUS GENRE-".$query_ajout_lien_espece_sousgenre."-".mysql_error());
				
					if($result_ajout_lien_espece_sousgenre === false){
						$statut[] = "Erreur critique à la création du lien ".($i+1)." espèce/sous-genre";
						$erreur = true;
					}
				
				}
				
				// Ajout des informations dans les tables POSSEDE_PROPRIETE
				for($i=0; $i<$_POST['ajt_nbProprietes']; $i++){
				
					$query_ajout_propriete_espece = "INSERT INTO possede_propriete(CODEPROPRIETEESPECE, CODEESPECE, VALEUR) ";
					$query_ajout_propriete_espece .= "VALUES(".$_POST['ajt_propriete'][$i].", ".$idEspece.", ".mysqlString($_POST['ajt_valeurPP'][$i]).") ";
					
					$result_ajout_propriete_espece = mysql_query($query_ajout_propriete_espece, $connexion) or logError("AJOUT PROPRIETE ESPECE-".$query_ajout_propriete_espece."-".mysql_error());
				
					if($result_ajout_propriete_espece === false){
						$statut[] = "Erreur critique à l'ajout de la propriété ".($i+1);
						$erreur = true;
					}
				
				}
				
			}
			
			if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
				$statut[] = "L'espèce a été ajoutée - redirection dans 2 sec...";
				logAction("ESPECE (id: ".$idEspece.") AJOUTE par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
			}
		
		}
		
	}
?>
<?php
//------------------------------------------------------------ Affichage du statut si le formulaire a été envoyé

	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
		
		if($erreur){
			afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}else{
			afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
			redirection("gestion/espece_ajoute", 2); // appel à la fonction redirection() définie dans fonctions.php
		}
	
	}

?>
<?php
	boutonRetour("index.php?p=gestion/espece_gere"); // // appel à la fonction boutonRetour() définie dans fonctions.php
?>
<div style="display: none"> <!-- une div masquée contenant les lignes de référence -->
	<div id="lg_pp_0" style="margin: 2px 0;">
		<label>Propriété</label>
		<select name="ajt_propriete[]">
			<?php
				if($nb_proprietes > 0){
					foreach($selectProprietes as $propriete){
						echo "<option value=\"".$propriete['id']."\">".htmlentities($propriete['nom'], ENT_NOQUOTES, "UTF-8")."</option>";
					}
					unset($propriete);
				}else{
					echo "<option disabled=\"disabled\">Aucune propriété</option>";
				}
			?>
		</select>
		, <label>valeur :</label>
		<input type="text" name="ajt_valeurPP[]" size="10" value="" /> (valeur facultative)
		<img id="btnLg_pp_0" class="boutonASLigne" src="images/moins.png" alt="-" title="Supprimer cette ligne" onclick="supprimerLigne(0, 'pp', 0);" />
	</div>
	<div id="lg_ssgen_0" style="margin: 2px 0;">
		<label>Est genre de</label>
		<select name="ajt_sousGenre[]">
			<?php
				if($nb_sousGenres > 0){
					foreach($selectSousGenres as $sousGenre){
						echo "<option value=\"".$sousGenre['id']."\">".htmlentities(capitalise($sousGenre['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
					}
					unset($sousGenre);
				}else{
					echo "<option disabled=\"disabled\">Aucun sous-genre</option>";
				}
			?>
		</select>
		, <label>d'après</label>
		<select name="ajt_classificationSG[]">
			<?php
				if($nb_classifications > 0){
					foreach($selectClassifications as $classification){
						echo "<option value=\"".$classification['id']."\">".htmlentities(truncate($classification['nom'], 20), ENT_NOQUOTES, "UTF-8")."</option>";
					}
					unset($classification);
				}else{
					echo "<option disabled=\"disabled\">Aucune classification</option>";
				}
			?>
		</select>
		<img id="btnLg_ssgen_0" class="boutonASLigne" src="images/moins.png" alt="-" title="Supprimer cette ligne" onclick="supprimerLigne(0, 'ssgen', 0);" />
	</div>
</div>
<form method="post" action="index.php?p=gestion/espece_ajoute" onsubmit="return (selectionnerTout('ajt_liste') && selectionnerTout('ajt_annexe'));">
	<table class="formulaire" style="margin-left: auto; margin-right: auto;">
		<tr>
			<th class="titre" colspan="2">Ajout d'une espèce</th>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations principales</th>
		</tr>
		<tr>
			<td style="width: 140px" class="etiquette">Nom * :</td>
			<td style="width: 525px" class="champ"><input type="text" name="ajt_nom" size="25" value="<?php echo htmlentities($dv_nom, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Auteur/Groupe * :</td>
			<td class="champ">
				<select id="ajt_auteur" name="ajt_auteur" style="width: 200px;">
					<?php
						if($nb_auteurs > 0){
							foreach($selectAuteurs as $auteur){
								if($auteur['id'] == $dv_auteur){
									echo "<option value=\"".$auteur['id']."\" selected=\"selected\">".htmlentities($auteur['abreviation'], ENT_NOQUOTES, "UTF-8")."</option>";
								}else{
									echo "<option value=\"".$auteur['id']."\">".htmlentities($auteur['abreviation'], ENT_NOQUOTES, "UTF-8")."</option>";
								}
							}
							unset($auteur);
						}else{
							echo "<option disabled=\"disabled\">Aucun auteur enregistré</option>";
						}
					?>
				</select>
				<input type="text" class="recherche" id="srch_auteur" value="recherche..." size="10" onfocus="clearField('srch_auteur', 'recherche...');" onblur="resetField('srch_auteur', 'recherche...');" onkeyup="trierSelect('ajt_auteur', 'srch_auteur');" /><br />
				<input type="button" value="Ajouter un auteur/groupe" onclick="popup('popup.php?p=gestion/auteur_ajoute_popup&amp;maj=ajt_auteur&amp;sel=1', 500, 420);" />
			</td>
		</tr>
		<tr>
			<td class="etiquette">Année apparition :</td>
			<td class="champ"><input type="text" name="ajt_annee" size="10" value="<?php echo htmlentities($dv_annee, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Région origine * :</td>
			<td class="champ">
				<select id="ajt_region" name="ajt_region">
					<?php afficherOptions($lst_airesgeo); ?>
				</select>
				<input type="text" class="recherche" id="srch_region" value="recherche..." size="10" onfocus="clearField('srch_region', 'recherche...');" onblur="resetField('srch_region', 'recherche...');" onkeyup="trierSelect('ajt_region', 'srch_region');" />
			</td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations complémentaires</th>
		</tr>
		<tr>
			<td class="etiquette">Propriété(s) :</td>
			<td class="champ">
				<div class="cadre-entete">Ajouter une ligne : <img class="boutonASLigne" src="images/plus.png" alt="+" title="Ajouter une ligne" onclick="ajouterLigne(0, 'pp', 0);" /></div>
				<div style="float: left; margin-left: 5px;"><input type="button" class="petit" value="Ajouter une propriété" onclick="popup('popup.php?p=gestion/propriete_ajoute_popup&amp;maj=ajt_propriete[]', 400, 290);" /></div>
				<div class="cadre-contenu" id="lstLg_pp">
					<?php
						$nbLignes = count($dv_propriete);
						$i=0;
						foreach($dv_propriete as $id => $value){
					?>
							<div id="lg_pp_<?php echo $i+1; ?>" style="margin: 2px 0;">
								<label>Propriété</label>
								<select name="ajt_propriete[]">
									<?php
										if($nb_proprietes > 0){
											foreach($selectProprietes as $propriete){
												if($propriete['id'] == $dv_propriete[$id]){
													echo "<option value=\"".$propriete['id']."\" selected=\"selected\">".htmlentities($propriete['nom'], ENT_NOQUOTES, "UTF-8")."</option>";
												}else{
													echo "<option value=\"".$propriete['id']."\">".htmlentities($propriete['nom'], ENT_NOQUOTES, "UTF-8")."</option>";
												}
											}
											unset($propriete);
										}else{
											echo "<option disabled=\"disabled\">Aucune propriété</option>";
										}
									?>
								</select>
								, <label>valeur :</label>
								<input type="text" name="ajt_valeurPP[]" size="10" value="<?php echo htmlentities($dv_valeurPP[$id], ENT_COMPAT, "UTF-8"); ?>" /> (valeur facultative)
								<img id="btnLg_pp_<?php echo $i+1; ?>" class="boutonASLigne" src="images/moins.png" alt="-" title="Supprimer cette ligne" onclick="supprimerLigne(<?php echo $i+1; ?>, 'pp', 0);" />
							</div>
					<?php
							$i++;
						}
						unset($id);
						unset($value);
					?>
				</div>
				<input type="hidden" id="nbLg_pp" name="ajt_nbProprietes" value="<?php echo $nbLignes; ?>" />
			</td>
		</tr>
		<tr>
			<td class="etiquette">Liste(s) esp. protg. :</td>
			<td class="champ">
				<div style="float: left;">
					<b>Liste :</b><br />
					<select id="lst_listes" name="lst_listes[]" multiple="multiple" style="min-width: 175px;" ondblclick="transfererOptions('lst_listes', 'ajt_liste');" size="6">
						<?php
							if($nb_listes > 0){
								foreach($selectListes as $liste){
									if(!in_array($liste['id'], $dv_liste)){
										echo "<option value=\"".$liste['id']."\">".htmlentities(truncate($liste['nom'], 30), ENT_NOQUOTES, "UTF-8")."</option>";
									}
								}
								unset($liste);
							}else{
								echo "<option disabled=\"disabled\">Aucune liste enregistrée</option>";
							}
						?>
					</select>
				</div>
				<div style="float: left; margin-left: 10px; margin-right: 12px; padding-top: 40px;">
					<input type="button" value=">>" onclick="transfererOptions('lst_listes', 'ajt_liste')" /><br />
					<input type="button" value="<<" onclick="transfererOptions('ajt_liste', 'lst_listes')" />
				</div>
				<div style="float: left;">
					<b>Sélection :</b><br />
					<select id="ajt_liste" name="ajt_liste[]" multiple="multiple" style="min-width: 175px;" ondblclick="transfererOptions('ajt_liste', 'lst_listes');" size="6">
						<?php
							if($nb_listes > 0){
								foreach($selectListes as $liste){
									if(in_array($liste['id'], $dv_liste)){
										echo "<option value=\"".$liste['id']."\" selected=\"selected\">".htmlentities(truncate($liste['nom'], 30), ENT_NOQUOTES, "UTF-8")."</option>";
									}
								}
								unset($liste);
							}
						?>
					</select>
				</div>
				<div style="clear: both;">
					<input type="text" class="recherche" id="srch_liste" style="vertical-align: top;" value="recherche..." size="10" onfocus="clearField('srch_liste', 'recherche...');" onblur="resetField('srch_liste', 'recherche...');" onkeyup="trierSelect('lst_listes', 'srch_liste');" />
					<br />
					<input type="button" value="Ajouter une liste" onclick="popup('popup.php?p=gestion/liste_ajoute_popup&amp;maj=lst_listes[]', 400, 300);" />
				</div>
				<hr />
			</td>
		</tr>
		<tr>
			<td class="etiquette">Annexe(s) :</td>
			<td class="champ">
				<div style="float: left;">
					<b>Liste :</b><br />
					<select id="lst_annexes" name="lst_annexes[]" multiple="multiple" style="min-width: 175px;" ondblclick="transfererOptions('lst_annexes', 'ajt_annexe');" size="6">
						<?php
							if($nb_annexes > 0){
								foreach($selectAnnexes as $annexe){
									if(!in_array($annexe['id'], $dv_annexe)){
										echo "<option value=\"".$annexe['id']."\">".htmlentities(truncate($annexe['nom'], 30), ENT_NOQUOTES, "UTF-8")."</option>";
									}
								}
								unset($annexe);
							}else{
								echo "<option disabled=\"disabled\">Aucune annexe enregistrée</option>";
							}
						?>
					</select>
				</div>
				<div style="float: left; margin-left: 10px; margin-right: 12px; padding-top: 40px;">
					<input type="button" value=">>" onclick="transfererOptions('lst_annexes', 'ajt_annexe')" /><br />
					<input type="button" value="<<" onclick="transfererOptions('ajt_annexe', 'lst_annexes')" />
				</div>
				<div style="float: left;">
					<b>Sélection :</b><br />
					<select id="ajt_annexe" name="ajt_annexe[]" multiple="multiple" style="min-width: 175px;" ondblclick="transfererOptions('ajt_annexe', 'lst_annexes');" size="6">
						<?php
							if($nb_annexes > 0){
								foreach($selectAnnexes as $annexe){
									if(in_array($annexe['id'], $dv_annexe)){
										echo "<option value=\"".$annexe['id']."\" selected=\"selected\">".htmlentities(truncate($annexe['nom'], 30), ENT_NOQUOTES, "UTF-8")."</option>";
									}
								}
								unset($annexe);
							}
						?>
					</select>
				</div>
				<div style="clear: both;">
					<input type="text" class="recherche" id="srch_annexe" style="vertical-align: top;" value="recherche..." size="10" onfocus="clearField('srch_annexe', 'recherche...');" onblur="resetField('srch_annexe', 'recherche...');" onkeyup="trierSelect('lst_annexes', 'srch_annexe');" />
					<br />
					<input type="button" value="Ajouter une annexe" onclick="popup('popup.php?p=gestion/annexe_ajoute_popup&amp;maj=lst_annexes[]', 400, 300);" />
				</div>
				<hr />
			</td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">liens avec les genres et sous-genres</th>
		</tr>
		<tr>
			<td class="etiquette">Genre(s) * :</td>
			<td class="champ">
				<div class="cadre-entete">Ajouter une ligne : <img class="boutonASLigne" src="images/plus.png" alt="+" title="Ajouter une ligne" onclick="ajouterLigne(1, 'gen', 1);" /></div>
				<div class="cadre-contenu" id="lstLg_gen">
					<?php
						$nbLignes = count($dv_genre);
						$i=0;
						foreach($dv_genre as $id => $value){
					?>
							<div id="lg_gen_<?php echo $i+1; ?>" style="margin: 2px 0;">
								<label>Est genre de</label>
								<select name="ajt_genre[]">
									<?php
										if($nb_genres > 0){
											foreach($selectGenres as $genre){
												if($genre['id'] == $dv_genre[$id]){
													echo "<option value=\"".$genre['id']."\" selected=\"selected\">".htmlentities(capitalise($genre['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
												}else{
													echo "<option value=\"".$genre['id']."\">".htmlentities(capitalise($genre['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
												}
											}
											unset($genre);
										}else{
											echo "<option disabled=\"disabled\">Aucun genre</option>";
										}
									?>
								</select>
								, <label>d'après</label>
								<select name="ajt_classificationG[]">
									<?php
										if($nb_classifications > 0){
											foreach($selectClassifications as $classification){
												if($classification['id'] == $dv_classificationG[$id]){
													echo "<option value=\"".$classification['id']."\" selected=\"selected\">".htmlentities(truncate($classification['nom'], 20), ENT_NOQUOTES, "UTF-8")."</option>";
												}else{
													echo "<option value=\"".$classification['id']."\">".htmlentities(truncate($classification['nom'], 20), ENT_NOQUOTES, "UTF-8")."</option>";
												}
											}
											unset($classification);
										}else{
											echo "<option disabled=\"disabled\">Aucune classification</option>";
										}
									?>
								</select>
								<img id="btnLg_gen_<?php echo $i+1; ?>" class="boutonASLigne" src="images/moins.png" alt="-" title="Supprimer cette ligne" onclick="supprimerLigne(<?php echo $i+1; ?>, 'gen', 1);" />
							</div>
					<?php
							$i++;					
						}
						unset($id);
						unset($value);
					?>
				</div>
				<input type="hidden" id="nbLg_gen" name="ajt_nbLiensG" value="<?php echo $nbLignes; ?>" />
			</td>
		</tr>
		<tr>
			<td class="etiquette">Sous-genre(s) :</td>
			<td class="champ">
				<div class="cadre-entete">Ajouter une ligne : <img class="boutonASLigne" src="images/plus.png" alt="+" title="Ajouter une ligne" onclick="ajouterLigne(0, 'ssgen', 0);" /></div>
				<div class="cadre-contenu" id="lstLg_ssgen">
					<?php
						$nbLignes = count($dv_sousGenre);
						$i=0;
						foreach($dv_sousGenre as $id => $value){
					?>
							<div id="lg_ssgen_<?php echo $i+1; ?>" style="margin: 2px 0;">
								<label>Est genre de</label>
								<select name="ajt_sousGenre[]">
									<?php
										if($nb_sousGenres > 0){
											foreach($selectSousGenres as $sousGenre){
												if($sousGenre['id'] == $dv_sousGenre[$id]){
													echo "<option value=\"".$sousGenre['id']."\" selected=\"selected\">".htmlentities(capitalise($sousGenre['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
												}else{
													echo "<option value=\"".$sousGenre['id']."\">".htmlentities(capitalise($sousGenre['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
												}
											}
											unset($sousGenre);
										}else{
											echo "<option disabled=\"disabled\">Aucun sous-genre</option>";
										}
									?>
								</select>
								, <label>d'après</label>
								<select name="ajt_classificationSG[]">
									<?php
										if($nb_classifications > 0){
											foreach($selectClassifications as $classification){
												if($classification['id'] == $dv_classificationSG[$id]){
													echo "<option value=\"".$classification['id']."\" selected=\"selected\">".htmlentities(truncate($classification['nom'], 20), ENT_NOQUOTES, "UTF-8")."</option>";
												}else{
													echo "<option value=\"".$classification['id']."\">".htmlentities(truncate($classification['nom'], 20), ENT_NOQUOTES, "UTF-8")."</option>";
												}
											}
											unset($classification);
										}else{
											echo "<option disabled=\"disabled\">Aucune classification</option>";
										}
									?>
								</select>
								<img id="btnLg_ssgen_<?php echo $i+1; ?>" class="boutonASLigne" src="images/moins.png" alt="-" title="Supprimer cette ligne" onclick="supprimerLigne(<?php echo $i+1; ?>, 'ssgen', 0);" />
							</div>
					<?php
							$i++;					
						}
						unset($id);
						unset($value);
					?>
				</div>
				<input type="hidden" id="nbLg_ssgen" name="ajt_nbLiensSG" value="<?php echo $nbLignes; ?>" />
			</td>
		</tr>
		
	<tr>
			<td class="envoi" colspan="2"><input type="submit" value="Ajouter" /><input type="hidden" name="form_sent" value="1" /></td>
		</tr>	<tr>
			<td class="legende" colspan="2">* = champs obligatoires</td>
		</tr>
	</table>
</form>
<div class="information">
	<div class="titre">Informations</div>
	<h4>Auteur / Groupe d'auteurs :</h4>
	<p>Indique l'auteur ayant mis en évidence l'espèce. Si plusieurs auteurs ont découvert l'espèce ensemble, indiquez-les en un seul champ (plus d'informations en ajoutant les auteurs).</p>
	<h4>Année d'apparition :</h4>
	<p>Si elle est connue, indiquez l'année (approximative) de l'apparition de l'espèce. Cette année peut être négative.</p>
	<h4>Annexes :</h4>
	<p>Indiquez, si ils existent, les annexes relatives à la réglementation de l'espèce</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>